<!doctype html>
<html lang="en">
<head>
    <title>Recaf - modern bytecode editor</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description" content="Recaf is a modern java bytecode editor using Objectweb's ASM and JavaFX.">
	<meta name="keywords" content="java,bytecode,editor,recaf,reverse engineering">
	<link rel="icon" type="image/x-icon" href="favicon.ico"/>
    <link rel="stylesheet" href="css/font/roboto300.css">
    <link rel="stylesheet" href="css/pure/pure-min.css">
    <link rel="stylesheet" href="css/pure/grids-responsive-min.css">
    <link rel="stylesheet" href="css/scroll.css">
    <link rel="stylesheet" href="css/common.css">
    <link rel="stylesheet" href="css/menu.css">
    <link rel="stylesheet" href="css/banner.css">
</head>
<body>
<header class="pure-menu pure-menu-horizontal">
    <a href="#"><div class="logo"></div></a>
    <nav>
        <ul class="pure-menu-list">
            <li class="pure-menu-item"><a href="https://col-e.github.io/Recaf-documentation/" class="pure-menu-link">Documentation</a></li>
            <li class="pure-menu-item"><a href="https://github.com/Col-E/Recaf" class="pure-menu-link">Github</a></li>
        </ul>
    </nav>
</header>
<div class="banner-wrapper">
    <div class="banner">
        <div class="banner-head">
            <div class="banner-beam">
                <h1>Recaf</h1>
                <p>A modern bytecode editor</p>
            </div>
            <!-- Ease of access download button -->
            <a class="pure-button" href="#" id="download">Download</a>
			<script src="js/jquery.min.js"></script>
			<script language="javascript" type="text/javascript">
			function setup() {
				var btn = $("#download");
				// Don't bother on mobile layout
				if (!btn.is(":visible")) {
					// Don't allow resizing the viewport to show the button.
					btn.css("display", "none");
					return;
				}
				// For desktop viewports, setup download button.
				$.getJSON("https://api.github.com/repos/Col-E/Recaf/releases/latest").done(function (json) {
					// Setup button text
					var tagName = json.tag_name;
					var btntxt = "Download Recaf-" + tagName;
					btn.html(btntxt);
					// Setup link URL
					var downloadURL = json.assets[0].browser_download_url;
					btn.attr("href", downloadURL);
			   }); 
			}
			setup();
			</script>
        </div>
    </div>
</div>
<article>
    <div id="content">
        <h3>What is Recaf?</h3>
        <p>Recaf is an open-source Java bytecode editor that simplifies the process of editing compiled Java applications. To make things easier Recaf abstracts away much of the internal class file format. Difficult tasks such as updating stack-frames are done automatically. Along with additional features to assist in the process of editing classes, Recaf is the most feature-rich free bytecode editor available.</p>
        
        <h3>Useful Information</h3>
        <p>While Recaf makes bytecode editing a more simple process it does not mean you should dive head-first into editing compiled Java applications without understanding some basic programming concepts and the Java class file architecture. Here are some references for these topics:</p>
        <ul>
            <li><a href="https://docs.oracle.com/javase/specs/jvms/se14/html/jvms-2.html">Specification: Chapter 2. The Structure of the Java Virtual Machine</a></li>
            <li><a href="https://docs.oracle.com/javase/specs/jvms/se14/html/jvms-4.html">Specification: Chapter 4. The class File Format </a></li>
            <li><a href="https://blog.takipi.com/jvm-architecture-101-get-to-know-your-virtual-machine/">JVM Architecture 101: Get to Know Your Virtual Machine</a></li>
            <li>Java instructions:
                <ul>
                    <li><a href="doc-instructions.html">Recaf's simplified instruction format</a></li>
                    <li><a href="https://docs.oracle.com/javase/specs/jvms/se14/html/jvms-6.html">Standard Java instructions</a></li>
                </ul>
            </li>
        </ul>
        <h3>Download &amp; Building</h3>
        <p>Downloadable jar binaries are provided through Github's <a href="https://github.com/Col-E/Recaf/releases">release page</a>.<br>Alternatively you can build from the source by cloning <i>(or downloading)</i> the repository and using maven to build the executable.</p>
        <h3>Requirements</h3>
        <p>Recaf requires Java 8 to run but it is recommended you use Java 11 or higher. Some features require additional setup in Java 8 whereas the process is automatic in Java 11 and above</p>
        <h3>Usage Guide &amp; More Information</h3>
        <ul>
            <li><a href="documentation.html">Documentation &amp; usage</a></li>
        </ul>	
        <h3>Contact &amp; Support</h3>
        <p>For reporting bugs and suggesting new features please use the github repo's <a href="https://github.com/Col-E/Recaf/issues">issue page</a> and submit a new issue. For other inquiries, or if you'd just like to chat, join the discord server here: <a href="https://discord.gg/Bya5HaA">discord.gg/Bya5HaA</a></p>
    </div>
</article> 
</body>
</html>
